package com.itheima.stock.service;

import com.itheima.stock.pojo.domain.SysUserDomain;
import com.itheima.stock.pojo.entity.SysUser;
import com.itheima.stock.vo.req.*;
import com.itheima.stock.vo.resp.*;

import java.util.List;
import java.util.Map;

/**
 * @author : itheima
 * @date : 2022/9/19 16:22
 * @description : 定义操纵用户的服务接口
 */
public interface UserService {
    /**
     * 根据账户名称查询用户信息
     *
     * @param userName
     * @return
     */
    SysUser getUserByUserName(String userName);

    /**
     * 用户登录功能
     *
     * @param reqVo
     * @return
     */
    R<AccessTokenLoginRespVo> login(LoginReqVo reqVo);

    /**
     * 登录校验码生成服务方法
     *
     * @return
     */
    R<Map> getCaptchaCode();

    R<PageResult<SysUserDomain>> getUserInfosByMCondition(UserMConditionReqVo reqVo);

    R addUser(SysUserAddReqVo reqVo, String accessToken);

    R<Map<String, List>> getUserRolesAndAllRoles(String userId);

    R updateUserRoles(UpdateUserRolesReqVo reqVo);

    R deleteUsers(List<Long> userIds);

    R<UserInfoRespVo> selectUserInfoById(String id);

    R updateUserInfo(SysUserUpdateReqVo reqVo, String accessToken);
}
